clean up code in gtk_list_store_set_n_columns()
authorBenjamin Otte <otte@gnome.org>
Tue, 30 Jun 2009 11:22:51 +0000 (13:22 +0200)
committerBenjamin Otte <otte@gnome.org>
Wed, 1 Jul 2009 08:57:11 +0000 (10:57 +0200)
Previous code's messiness noted by Francisco Javier Taboada Aguado
in http://mail.gnome.org/archives/gtk-devel-list/2009-June/msg00001.html

gtk/gtkliststore.c

index 3f2f7c4fc381f55194fe2e647128427ad5ce248b..470c9f82b188a7889caf1fa92c05823279d3f604 100644 (file)
@@ -338,29 +338,19 @@ gtk_list_store_set_n_columns (GtkListStore *list_store,
                              gint          n_columns)
 {
   GType *new_columns;
+  int i;
 
   if (list_store->n_columns == n_columns)
     return;
 
-  new_columns = g_new0 (GType, n_columns);
-  if (list_store->column_headers)
-    {
-      /* copy the old header orders over */
-      if (n_columns >= list_store->n_columns)
-       memcpy (new_columns, list_store->column_headers, list_store->n_columns * sizeof (gchar *));
-      else
-       memcpy (new_columns, list_store->column_headers, n_columns * sizeof (GType));
-
-      g_free (list_store->column_headers);
-    }
+  list_store->column_headers = g_renew (GType, list_store->column_headers, n_columns);
+  for (i = list_store->n_columns; i < n_columns; i++)
+    list_store->column_headers[i] = G_TYPE_INVALID;
+  list_store->n_columns = n_columns;
 
   if (list_store->sort_list)
     _gtk_tree_data_list_header_free (list_store->sort_list);
-
   list_store->sort_list = _gtk_tree_data_list_header_new (n_columns, list_store->column_headers);
-
-  list_store->column_headers = new_columns;
-  list_store->n_columns = n_columns;
 }
 
 static void